package br.unirn.exemplos.dao;

import java.util.List;

import org.hibernate.Query;

import br.unirn.exemplos.dominio.Usuario;

public class UsuarioDao extends AbstractDao<Usuario> {

	public Usuario findById(int id) {
		return (Usuario) DAOFactory.getInstance().getSession()
				.get(Usuario.class, id);
	}

	public Usuario findByLogin(String login) {
		Query q = DAOFactory.getInstance().getSession()
				.createQuery("from Usuario where login = :login");
		q.setString("login", login);

		Usuario u = (Usuario) q.uniqueResult();

		return u;

	}
	/**
	 * 
	 * @param u
	 * @return
	 */
	public List<Usuario> findUsuarios(Usuario u) {
		String query = "from Usuario where 1=1 ";

		if (u.getLogin() != null && !u.getLogin().isEmpty()){
			query +=" and login like :login ";
		}
		if (u.getNome() != null && !u.getNome().isEmpty()){
			query +=" and nome like :nome ";
		}
		Query q = DAOFactory.getInstance().getSession()
				.createQuery(query);
		if (u.getLogin() != null && !u.getLogin().isEmpty()){
			q.setString("login", u.getLogin() + "%");
		}
		if (u.getNome() != null && !u.getNome().isEmpty()){
			q.setString("nome", u.getNome() + "%");
		}

		@SuppressWarnings("unchecked")
		List<Usuario> usuarios = (List<Usuario>) q.list();

		return usuarios;
	}
}
